package br.ufscar.acumaaf.smc.activity;

import br.ufscar.acumaaf.smc.R;
import br.ufscar.acumaaf.smc.dao.DadoSessaoDAO;
import br.ufscar.acumaaf.smc.dao.UsuarioDAO;
import br.ufscar.acumaaf.smc.model.DadoSessao;
import br.ufscar.acumaaf.smc.model.Usuario;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class RegistraDadosSessaoUsuario extends Activity{

	private Integer iCodigoUsuario;
	private Integer iCodigoSessao;
	private Usuario usuario;
	private DadoSessao dadoSessao;
	private Integer iCodigoDadoSessao;
	
	private TextView nomeUsuario;
//	private TextView codigoSessao;
	private EditText campoPressaoSistolica;
	private EditText campoPressaoDiastolica;
	private EditText campoPeso;
		
	public void onCreate(Bundle b){
		super.onCreate(b);
		setContentView(R.layout.formulario_registra_dados_sessao_usuario);
		
		//Captura os campos da tela
		nomeUsuario = (TextView) findViewById(R.id.registradadosusuario_textview_nomeusuario);
//		codigoSessao = (TextView) findViewById(R.id.registradadosusuario_textview_codigosessao);
		campoPressaoSistolica = (EditText) findViewById(R.id.registradadosusuario_edittext_pressaosistolica);
		campoPressaoDiastolica = (EditText) findViewById(R.id.registradadosusuario_edittext_pressaodiastolica);
		campoPeso = (EditText) findViewById(R.id.registradadosusuario_edittext_peso);
		
		iCodigoUsuario = null;
		iCodigoSessao = null;
		dadoSessao = new DadoSessao();
		Bundle extras = getIntent().getExtras();
		//Recupera os dados para Edição
		if(extras != null){
			iCodigoUsuario = extras.getInt("codigousuario");
			if(iCodigoUsuario != null){
				usuario = new UsuarioDAO(this).buscarUsuarioPeloCodigo(iCodigoUsuario);
				nomeUsuario.setText(usuario.getNome());
				dadoSessao.setCodigoUsuario(iCodigoUsuario);
			}
			iCodigoSessao = extras.getInt("codigosessao");
			if(iCodigoSessao != null){
//				codigoSessao.setText(String.valueOf(iCodigoSessao));
				dadoSessao.setCodigoSessao(iCodigoSessao);
			}
		}
				
		Button botaoCadastrar = (Button) findViewById(R.id.registradadosusuario_button_cadastrar);
		botaoCadastrar.setOnClickListener(new Button.OnClickListener(){
			public void onClick(View v) {
				
				//seleciona o conteúdo da mensagem a ser exibida no Dialog de Alerta
				boolean entrouElsePressao = false;
				boolean entrouElsePeso = false;
				
				dadoSessao.setCodigoDadoSessao(null);

				AlertDialog.Builder alerta = new AlertDialog.Builder(RegistraDadosSessaoUsuario.this);
				alerta.setTitle("Falha no cadastro!");		
				alerta.setIcon(R.drawable.alerticon);
				alerta.setCancelable(false);
				alerta.setPositiveButton("OK", new DialogInterface.OnClickListener() {
				           public void onClick(DialogInterface dialog, int id) {
				           }
				       });
				
				//Verifica se os campos Pressão Sistólica e Diastólica não estão nulos
				if(!campoPressaoSistolica.getText().toString().equals("")){
					if(!campoPressaoDiastolica.getText().toString().equals("")){
						if(!((Integer.parseInt(campoPressaoSistolica.getText().toString()) < 30) || (Integer.parseInt(campoPressaoSistolica.getText().toString()) > 300) || (Integer.parseInt(campoPressaoDiastolica.getText().toString()) < 30) || (Integer.parseInt(campoPressaoDiastolica.getText().toString()) > 200))){
							dadoSessao.setCodigoInstrumentoColeta(1);
							dadoSessao.setValor(campoPressaoSistolica.getText().toString() + "x" + campoPressaoDiastolica.getText().toString());
//							Log.i("smc", "DadoSessaoGravandoPressao | CodidoDadoSessao: " + dadoSessao.getCodigoDadoSessao());
//							Log.i("smc", "DadoSessaoGravandoPressao | CodidoSessao....: " + dadoSessao.getCodigoSessao());
//							Log.i("smc", "DadoSessaoGravandoPressao | CodidoUsuario...: " + dadoSessao.getCodigoUsuario());
//							Log.i("smc", "DadoSessaoGravandoPressao | CodInstrumentoCo: " + dadoSessao.getCodigoInstrumentoColeta());
//							Log.i("smc", "DadoSessaoGravandoPressao | Valor...........: " + dadoSessao.getValor());
							iCodigoDadoSessao = null;
							iCodigoDadoSessao = new DadoSessaoDAO(getApplicationContext()).buscarDadoSessaoPeloCodigoSessaoCodigoUsuarioECodigoInstrumentoColeta(dadoSessao.getCodigoSessao(), dadoSessao.getCodigoUsuario(), dadoSessao.getCodigoInstrumentoColeta()); 
							if(iCodigoDadoSessao == null){
								boolean registrou = new DadoSessaoDAO(getApplicationContext()).inserirDadoSessao(dadoSessao);
								if(registrou){
									Log.i("smc", "DadoSessaoGravandoPressao | Pressão Arterial gravada com sucesso!");
								}
							}
							else{
								dadoSessao.setCodigoDadoSessao(iCodigoDadoSessao);
								boolean atualizou = new DadoSessaoDAO(getApplicationContext()).atualizaDadoSessao(dadoSessao);
								if(atualizou){
									Log.i("smc", "DadoSessaoAtualizandoPressao | Pressão Arterial atualizada com sucesso!");
								}
							}
							entrouElsePressao = false;
						}
						else{
							entrouElsePressao = true;
						}
					}
				}
				if(!campoPeso.getText().toString().equals("")){
					if(!((Integer.parseInt(campoPeso.getText().toString()) < 5) || (Integer.parseInt(campoPeso.getText().toString()) > 200))){
						dadoSessao.setCodigoDadoSessao(null);
						dadoSessao.setCodigoInstrumentoColeta(2);
						dadoSessao.setValor(campoPeso.getText().toString());
	//					Log.i("smc", "DadoSessaoGravandoPeso | CodidoDadoSessao: " + dadoSessao.getCodigoDadoSessao());
	//					Log.i("smc", "DadoSessaoGravandoPeso | CodidoSessao....: " + dadoSessao.getCodigoSessao());
	//					Log.i("smc", "DadoSessaoGravandoPeso | CodidoUsuario...: " + dadoSessao.getCodigoUsuario());
	//					Log.i("smc", "DadoSessaoGravandoPeso | CodInstrumentoCo: " + dadoSessao.getCodigoInstrumentoColeta());
	//					Log.i("smc", "DadoSessaoGravandoPeso | Valor...........: " + dadoSessao.getValor());
						iCodigoDadoSessao = null;
						iCodigoDadoSessao = new DadoSessaoDAO(getApplicationContext()).buscarDadoSessaoPeloCodigoSessaoCodigoUsuarioECodigoInstrumentoColeta(dadoSessao.getCodigoSessao(), dadoSessao.getCodigoUsuario(), dadoSessao.getCodigoInstrumentoColeta()); 
						if(iCodigoDadoSessao == null){
							boolean registrou = new DadoSessaoDAO(getApplicationContext()).inserirDadoSessao(dadoSessao);
							if(registrou){
								Log.i("smc", "DadoSessaoGravandoPeso | Peso do Participante gravado com sucesso!");
							}
						}
						else{
							dadoSessao.setCodigoDadoSessao(iCodigoDadoSessao);
							boolean atualizou = new DadoSessaoDAO(getApplicationContext()).atualizaDadoSessao(dadoSessao);
							if(atualizou){
								Log.i("smc", "DadoSessaoAtualizandoPeso | Peso atualizada com sucesso!");
							}
						}
						entrouElsePeso = false;
					}
					else{
						entrouElsePeso = true;
					}
				}
				
				if(!(entrouElsePressao || entrouElsePeso)){
					//Fechando a Tela de Registro dos dados
					setResult(RESULT_OK, new Intent());	
					finish();
				}
				else if(entrouElsePressao && entrouElsePeso){
					alerta.setMessage("Certifique os seguintes valores: Pressão Sistólica (30 - 300 mmHg); Pressão Diastólica (30 - 200 mmHg); e Peso (5 - 200 kg)");
					alerta.show();
				}
				else if(entrouElsePressao){
					alerta.setMessage("Certifique os seguintes valores: Pressão Sistólica (30 - 300 mmHg) e Pressão Diastólica (30 - 200 mmHg)");	
					alerta.show();
				}
				else if(entrouElsePeso){
					alerta.setMessage("Certifique os seguintes valores: Peso (5 - 200 kg)");
					alerta.show();
				}
			}		
			
		});
		
		Button botaoCancelar = (Button) findViewById(R.id.registradadosusuario_button_cancelar);
		botaoCancelar.setOnClickListener(new Button.OnClickListener(){
			public void onClick(View v) {
				setResult(RESULT_CANCELED);
				//Fecha a tela
				finish();
			}
			
		});
	}
}
